/*******************************************************************************
** 文件名称：rfid.c
** 文件作用：RFID操作
** 编写作者：Tom Free 付瑞彪
** 编写时间：2019-11-08
** 文件备注：
**			 
**           
** 更新记录：
**          2019-11-08 -> 创建文件                          <Tom Free 付瑞彪>
**
**
**       Copyright (c) 深圳市三派智能科技有限公司 All Rights Reserved
**
**       1 Tab == 4 Spaces     UTF-8     ANSI C Language(C99)
*******************************************************************************/

#include "rfid.h"
#include "nz3801.h"
#include "log.h"

/*******************************************************************************
** 函数名称：RFID_Init
** 函数作用：初始化RFID
** 输入参数：无
** 输出参数：无
** 使用范例：RFID_Init();
** 函数备注：
*******************************************************************************/
void RFID_Init(void)
{
    NZ3801_Init();
}

/*******************************************************************************
** 函数名称：RFID_GetCardID
** 函数作用：读取卡ID
** 输入参数：pTagType - 返回卡类型
**          snr      - 卡ID号
** 输出参数：无
** 使用范例：RFID_GetCardID(&type, &snr);
** 函数备注：
*******************************************************************************/
GM_BOOL RFID_GetCardID(GM_U8* pTagType, GM_U8* snr)
{
    GM_U8 i;

    /* 复位，失败直接返回无卡 */
    if (NZ3801_Reset() != MI_OK)
    {
        return GM_FALSE;
    }

    for (i = 0; i < 3; i++)
    {
        /* 寻天线内未进入休眠的卡，返回卡类型 */
        if (NZ3801_Request(PICC_REQIDL, pTagType) != MI_OK)
        {
            continue;
        }

        /* 防冲撞并返回卡序列号 */
        if (NZ3801_Anticoll(snr) != MI_OK)
        {
            continue;
        }

        GM_LOG("i=%d", i);

        return GM_TRUE;
    }

    return GM_FALSE;
}
